home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue55 / Clinic / ListViewEx.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-01-03  |  1.2 KB  |  58 lines

  1. unit ListViewEx;
  2.  
  3. interface
  4.  
  5. uses
  6.   Classes, ComCtrls;
  7.  
  8. type
  9.   TItemCheckEvent = procedure (Sender: TCustomListView;
  10.     Item: TListItem; Checked: Boolean) of object;
  11.  
  12.   TListViewEx = class(TListView)
  13.   private
  14.     FOnCheck: TItemCheckEvent;
  15.     FChecked: Boolean;
  16.     FListItem: TListItem;
  17.   protected
  18.     function CanChange(Item: TListItem; Change: Integer): Boolean; override;
  19.     procedure Change(Item: TListItem; Change: Integer); override;
  20.   published
  21.     property OnCheck: TItemCheckEvent read FOnCheck write FOnCheck;
  22.   end;
  23.  
  24. procedure Register;
  25.  
  26. implementation
  27.  
  28. uses
  29.   CommCtrl;
  30.  
  31. procedure Register;
  32. begin
  33.   RegisterComponents('Clinic', [TListViewEx]);
  34. end;
  35.  
  36. { TListViewEx }
  37.  
  38. function TListViewEx.CanChange(Item: TListItem; Change: Integer): Boolean;
  39. begin
  40.   Result := inherited CanChange(Item, Change);
  41.   if Result and (Change = LVIF_STATE) then
  42.   begin
  43.     FListItem := Item;
  44.     FChecked := Item.Checked
  45.   end
  46. end;
  47.  
  48. procedure TListViewEx.Change(Item: TListItem; Change: Integer);
  49. begin
  50.   inherited;
  51.   if (Change = LVIF_STATE) and (Item = FListItem) and
  52.      (Item.Checked <> FChecked) and
  53.      Assigned(FOnCheck) then
  54.     FOnCheck(Self, Item, Item.Checked)
  55. end;
  56.  
  57. end.
  58.